/**
 * 注意该js文件存放一些通用js方法其他一些业务方法请不要往该文件写
 * @returns
 */

//获取服务器地址xiaogq
function getRootPath(){  
    //获取当前网址，如： http://localhost:8083/uimcardprj/share/meun.jsp  
    var curWwwPath=window.document.location.href;  
    //获取主机地址之后的目录，如： uimcardprj双击查看原图/meun.jsp  
    var pathName=window.document.location.pathname;  
    var pos=curWwwPath.indexOf(pathName);  
    //获取主机地址，如： http://localhost:8083  
    var localhostPaht=curWwwPath.substring(0,pos);  
    //获取带"/"的项目名，如：/uimcardprj  
    var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1); 
    return(localhostPaht+projectName);  
}

/**
 * 去字符串左右中间空格(xiaogq)
 * @param str
 */
function trim(str) {
	return str.replace(/(^\s*)|(\s*$)/g, "");
}

/**
 * 点击列表页搜索按钮刷新bootstrap Table通用方法(xiaogq)
 * @author    xigogq
 * @param     bootstrap        bootstrap Table Id
 * @param     param            请求参数
 */
function flashBootstrapTable(bootstrap,param){
    $("#"+bootstrap).bootstrapTable("refresh", {query:param});
}

/**
 * 通用时间插件方法
 * @author    xigogq
 * @param node
 * @param formats
 */
function showDateTime(node,formats,minView){
    $("#"+node).datetimepicker({
        format:formats,
        weekStart: 0,
        todayBtn:  'linked',
        language:'zh-CN',
        autoclose: true,
        todayHighlight: 1,
        startView: 2,
        minView: minView,
        forceParse: 0,
        showMeridian: true
    });
}

//格式化文本域类型字段列的值(xiaogq)
function dataFormatter(value,row){
    var vals = value == null ? "" : value;
    var val = vals;
    $.each(row, function (key, value) {
        if(key.lastIndexOf("_textarea") != -1 || key.lastIndexOf("_textblock") != -1 || (key.lastIndexOf("__varchar") != -1 && key != "name_varchar")){
            if(trim(vals) != "" && vals.length > 6){
                val = '<span style="cursor:pointer;" title="'+vals+'">'+vals.substring(0,6)+'...</span>';
            }
        }
    });
    return val;
}

/**
 * 下拉多选通用方法
 * @ahthor    wangzy
 * @param max
 */
function selectMax(parameter){
    var actual={
        el:"",
        input:"",
        inputId:"",
        dataList:[],
        selectList:[],
        methods:function(){
            //点击选中回调函数  参数一 DOM对象   参数二 选择选中数据
        },
        deletemethods:function () {
            //点击删除回调函数   参数一 DOM对象   参数二 选择选中数据
        }
    }

    /**
     * 合并对象，清除事件
     */
    function removeEvent(){
        for(var x in parameter){
            if(actual[x]!=undefined){
                actual[x]=parameter[x];
            }
        }
        actual.el.unbind();
        $(".selectMaxDU>li").unbind();
        $(".selectMaxLU>li").unbind();
        actual.input.unbind();
        if($("#selectMax").attr("id")!=undefined){
            $("#selectMax").remove();
        }
        actual.el.css("position","relative");
    }
    removeEvent();
    console.log(actual.dataList,actual.selectList);
    var arr=[];
    function render(){
        var letUl=actual.selectList,letHtml=[],dropUl="";
        var renderDobj=renderD(actual.dataList);
        if(renderDobj.arr.length>0){
            dropUl=renderDobj.html;
            arr=renderDobj.arr;
        }
        letHtml=renderL(actual.selectList).join("");
        var str='<ul class="selectMaxLU" style="list-style: none;overflow: hidden;position:absolute;z-index: 1000;top:0;left:0;padding: 6px 12px;">'+letHtml+'</ul>'+dropUl;
        actual.el.append(str);
    }
    function renderL(list) {
        return list.map(function (x,index) {
            return '<li class="selectMaxLUli" style="float: left;margin: 0 6px;padding: 0 6px;border: 1px solid #dedede;cursor:pointer ">'+x.name+'<span class="selectMaxLUliDelete" data-id='+index+' style="padding-left: 5px;">x</span></li>';
        });
    }
    function renderD(list,val) {
        var renderDobj={html:[],arr:[]};
        var brr=[];
        list.forEach(function(x){
            if((x.name.indexOf(val)!=(-1)&&val!="")||val===1){
                var pis=false;
                actual.selectList.forEach(function (y) {
                    x.id===y.id?pis=true:"";
                });
                if(pis){
                    brr.push('<li class="selectMaxDUli" style="border-bottom: 1px solid #dedede; padding: 3px 16px;cursor:pointer ">'+x.name+'<span style="float: right;">✔</span></li>');
                }else {
                    brr.push('<li class="selectMaxDUli porinter" style="border-bottom: 1px solid #dedede; padding: 3px 16px;cursor:pointer ">'+x.name+'</li>');
                }
                renderDobj.arr.push(x);
            }
        });
        renderDobj.html='<ul class="selectMaxDU" style="list-style: none;position: absolute;left: 0;z-index: 1000;background-color: #fff;width: 95%;border: 1px solid #dedede;padding:0;max-height:200px;overflow-y: scroll;">'+brr.join("")+'</ul>';
        return renderDobj;
    }
    render();
    var isinput=false;
    actual.el.mouseover(function () {
        //console.log(1);
        isinput=false;
    });
    actual.el.mouseout(function () {
        isinput=true;
    });
    actual.input.blur(function () {
        console.log(isinput);
        if(isinput){
            $(".selectMaxDU").remove();
            arr=[];
        }
    });
    actual.el.on("click",".selectMaxDUli",function () {
        var index=$(this).index();
        var i=true;
        actual.selectList.forEach(function (x) {
            if(x.id===arr[index].id){
                i=false
            }
        });
        i?actual.selectList.push(arr[index]):"";
        $(".selectMaxLU").html(renderL(actual.selectList).join(""));
        if($(this).html()===arr[index].name){
            $(this).html($(this).html()+'<span style="float: right;">✔</span>');
        }
        var width=$(".selectMaxLU").css("width").substring(0,$(".selectMaxLU").css("width").length-2);
        actual.input.css("text-indent",(parseInt(width)-24)+"px");
        actual.input.val("");
        actual.methods(this,actual.selectList);
    });
    actual.input.click(function() {
        if($(this).val()==""&&$(".selectMaxDU").length==0){
            var val=1;
            var renderDobj=renderD(actual.dataList,val);
            if(renderDobj.arr.length>0){
                actual.el.append(renderDobj.html);
                arr=renderDobj.arr;
            }else {
                $(".selectMaxDU").remove();
                arr=[];
            }
        }else if($(".selectMaxDU").length==1&&$(this).val()==""){
            $(this).val("");
            $(".selectMaxDU").remove();
            arr=[];
        }
    });
    actual.el.on('input propertychange',"#"+actual.inputId, function() {
        var _this=$(this);
        setTimeout(function(){
            var val=_this.val();
            var renderDobj=renderD(actual.dataList,val);
            console.log(renderDobj);
            if(renderDobj.arr.length>0){
                actual.el.append(renderDobj.html);
                arr=renderDobj.arr;
            }else {
                $(".selectMaxDU").remove();
                arr=[];
            }
        },300);
    });
    actual.input.keydown(function(event) {
        if(event.keyCode==8&&$(this).val()==""){
            actual.selectList.splice((actual.selectList.length-1),1);
            $(".selectMaxLU").html(renderL(actual.selectList).join(""));
            $(".selectMaxDU").remove();
            arr=[];
            var width=$(".selectMaxLU").css("width").substring(0,$(".selectMaxLU").css("width").length-2);
            actual.input.css("text-indent",(parseInt(width)-24)+"px");
            actual.deletemethods(this,actual.selectList);
        }
    });
    actual.el.on("click",".selectMaxLUliDelete",function(){
        var index=$(this).data("id");
        actual.selectList.splice(index,1);
        $(".selectMaxLU").html(renderL(actual.selectList).join(""));
        $(".selectMaxDU").remove();
        arr=[];
        var width=$(".selectMaxLU").css("width").substring(0,$(".selectMaxLU").css("width").length-2);
        actual.input.css("text-indent",(parseInt(width)-24)+"px");
        actual.deletemethods(this,actual.selectList);
    });
    $("body").click(function () {
        if(isinput){
            $(".selectMaxDU").remove();
            arr=[];
        }
    });
}

/**
 * 下拉单选模糊查询
 * @param node
 * @param datas
 */
function selectOnly(node,datas){
    var domId = $(node).attr("id");
    listDept({
        el:$("#"+domId).parent(),
        input:$("#"+domId),
        inputId:domId,
        dataList:datas,
        padding:"padding:0 20px;",
        width:"90%;",
        margin:"0 0 0 15px;",
        method:function(e,i,arr){
            $("#"+domId).prev().val(i.id);
            $("#"+domId).val(i.name);
        }
    });
}

/**
 * 实体导入通用方法
 * @author xiaogq Sep 23, 2013
 * @param
 */
function oper_import(node){
    var title = $(node).attr("title");
    var entityId = $(node).attr("tableCode");
    var url = "ExportImport/importchoosefile.do?entityId="+entityId+"&entityName="+title;
    //parent.addMenu(node,{title:"导入:"+title,url:url,type:"R"});
    var node = {id: "oper_import"+entityId, text:"导入:"+title, url:url};
    parent.showTab(node);
}

/**
 * 实体导出通用方法
 * @author xiaogq Sep 23, 2013
 * @param
 */
function oper_export(node) {
    var entityId = $(node).attr("tableCode");
    var title = $(node).attr("title");
    var url = "ExportImport/initExportEntity.do?entityId="+entityId;
    //parent.addMenu(node,{title:"导出:"+title,url:url,type:"R"});
    var node = {id: "oper_export"+entityId, text:"导出:"+title, url:url};
    parent.showTab(node);
}
